package com.maiko.maikoaiagent.tools;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;

import java.io.IOException;
/**
 * WebScrapingTool 是一个简单的网页抓取工具类，
 * 通过使用 Jsoup 库连接指定 URL 并获取网页的 HTML 内容。
 *
 * 适用于需要提取网页原始 HTML 内容的场景，如页面结构分析、内容提取等。
 *
 * 依赖库：Jsoup（需确保引入了相关依赖）
 *
 * 示例用途：
 * WebScrapingTool tool = new WebScrapingTool();
 * String html = tool.scrapeWebPage("https://example.com");
 *
 * 注意事项：
 * - 本方法不会处理 JavaScript 渲染内容。
 * - 建议对返回 HTML 进行进一步解析和清洗。
 *
 * @author Maiko7
 * @create 2025-07-09 15:08
 */
public class WebScrapingTool {

    /**
     * 抓取指定网页 URL 的 HTML 内容。
     *
     * @param url 要抓取的网页地址（必须为合法的 HTTP 或 HTTPS 链接）
     * @return 抓取到的网页 HTML 内容；如发生错误则返回错误信息
     */
    @Tool(description = "Scrape the content of a web page")
    public String scrapeWebPage(@ToolParam(description = "URL of the web page to scrape") String url) {
        try {
            // 使用 Jsoup 连接指定 URL 并获取文档对象
            Document doc = Jsoup.connect(url).get();
            // 返回整个网页的 HTML 字符串
            return doc.html();
        } catch (IOException e) {
            // 如果连接或抓取失败，则返回错误信息
            return "Error scraping web page: " + e.getMessage();
        }
    }
}


